package cl.tinet.trainee.tarea6b.ejb;

import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import cl.tinet.trainee.tarea6b.dao.InterfazUsuarioBeanDAO;
import cl.tinet.trainee.tarea6b.dao.UsuarioDAO;
import cl.tinet.trainee.tarea6b.model.Usuario;
import cl.tinet.trainee.tarea6b.model.UsuarioNoEncontradoException;

/**
 * Clase que implementa los metodos de la interfaz InterfazUsuarioBean.
 * 
 * @author Frmancil
 * 
 */
@Stateless(mappedName = "userBean", name = "userBean")
public class UsuarioBean implements InterfazUsuarioBean {
	/**
	 * Manejador de entidad y contexto de persistencia de los datos.
	 */
	@PersistenceContext
	EntityManager em;

	// ArrayList<Usuario> listaUsuario = new ArrayList<Usuario>();
	InterfazUsuarioBeanDAO dao;

	/**
	 * Instanciador de nuevo Entity Manager para cada acceso a la clase.
	 */
	@PostConstruct
	public void init() {
		dao = new UsuarioDAO(em);
	}

	public void agregarUsuario(Usuario nuevoUsuario) {
		dao.agregar(nuevoUsuario);
	}

	public void borrarUsuario(Usuario usuarioAEliminar) throws UsuarioNoEncontradoException {
		dao.borrar(usuarioAEliminar);
	}

	public void actualizarUsuario(Usuario usuarioAActualizar) throws UsuarioNoEncontradoException {
		dao.actualizar(usuarioAActualizar);
	}

	public Usuario leerUsuario(String username) {
		return (dao.leer(username));
	}

	public Usuario buscarUsuario(Usuario usuarioABuscar) throws UsuarioNoEncontradoException {
		return (dao.buscar(usuarioABuscar));
	}

	public ArrayList<Usuario> listarUsuarios() {
		// return this.listaUsuario;
		return dao.listar();
	}

}
